package com.spzx.product.api.factory;

import com.spzx.product.api.RemoteProductService;
import com.spzx.product.api.domin.ProductSku;
import com.spzx.common.core.domain.R;
import com.spzx.product.vo.SkuPriceVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;

import java.util.List;

@Slf4j
public class RemoteProductFallbackFactory implements FallbackFactory<RemoteProductService> {
    @Override
    public RemoteProductService create(Throwable cause) {
      log.error("获取详情sku失败",cause.getMessage());
      return new RemoteProductService() {
          @Override
          public R<ProductSku> getProductSku(Long skuId, String heard) {
              return R.fail("获取商品SKU详情失败" + cause.getMessage());
          }

          @Override
          public R<List<SkuPriceVo>> getskupricelist(List<Long> skuIds, String source) {
              return R.fail("获取商品SKU详情失败" + cause.getMessage());
          }

          @Override
          public R<SkuPriceVo> getSkuPrice(Long skuId, String source) {
              return R.fail("获取商品SKU详情失败" + cause.getMessage());
          }
      };
//即使添加了 @Component，也需要注意：
//确保类路径能被组件扫描到（在启动类所在包或其子包下）
//避免重复创建 Bean（如果同时通过 @Component 和 @FeignClient 声明会导致重复, Bean 错误,
// 在@FeignClient中加载了FallbackFactory.classj就不要在加到容器中了）
    }
}
